package com.hy.mydesktop.shared.persistence.domain.gxt;

import java.util.Map;

import com.extjs.gxt.ui.client.data.BaseModel;
import com.extjs.gxt.ui.client.data.BaseTreeModel;
import com.extjs.gxt.ui.client.widget.Component;
import com.hy.mydesktop.client.component.type.ComponentTypeEnum;
import com.hy.mydesktop.shared.persistence.domain.gxt.constant.GxtMetaModelTypeEnum;
import com.hy.mydesktop.shared.persistence.domain.gxt.constant.LibConstants;

/**
 * 
 * <ul>
 * <li>开发作者：花宏宇</li>
 * <li>设计日期：2010-8-27；时间：下午04:38:15</li>
 * <li>类型名称：GxtComponentMetaModel</li>
 * <li>设计目的：
 * GxtComponentMetaModel存储所以控件的元模型:分为普通结构和树形结构<br>
 * GxtComponentMetaModel迟绑定：gxtMetaModelTypeEnum用于判断GxtComponentMetaModel是属于BaseModel还是
 * 其子类TreeModel</li>
 * </ul>
 * <ul>
 * <b>修订编号：</b>
 * <li>修订日期：</li>
 * <li>修订作者：</li>
 * <li>修订原因：</li>
 * <li>修订内容：</li>
 * </ul>
 */
public class GxtComponentMetaModel2 extends BaseTreeModel {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = -1979950917385401561L;
	
	

	/**
	 * gxtMetaModelTypeEnum GxtComponentMetaModel的真实数据类型
	 */
	private GxtMetaModelTypeEnum gxtMetaModelTypeEnum;

	public GxtMetaModelTypeEnum getGxtMetaModelTypeEnum() {
		return gxtMetaModelTypeEnum;
	}

	public void setGxtMetaModelTypeEnum(GxtMetaModelTypeEnum gxtMetaModelTypeEnum) {
		this.gxtMetaModelTypeEnum = gxtMetaModelTypeEnum;
	}

	/**
	 * 构造函数
	 */
	public GxtComponentMetaModel2 ( )
	{
		super ( ) ;
		this
			.initAbstractDataModelType ( ) ;
	}

	/**
	 * 构造函数
	 */
	public GxtComponentMetaModel2 (Map < String , Object > properties )
	{
		super (
				properties ) ;
		this
			.initAbstractDataModelType ( ) ;
	}

	
			
	
	
	/**
	 * 
	 * <ul>
	 * <li>方法含义：获取将要创建的控件Component的真实类型</li>
	 * <li>方法作者：花宏宇</li>
	 * <li>编写日期：2010-8-28；时间：下午上午11:12:55</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @return
	 */
	public ComponentTypeEnum getComponentTypeEnum ( )
	{
		return this.get (LibConstants.COMPONENT_MODEL_TYPE.name().toLowerCase() ) ;
	}

	
		
	/**
	 * 
	 * <ul>
	 * <li>方法含义：设置要创建的控件Component的真实类型</li>
	 * <li>方法作者：花宏宇</li>
	 * <li>编写日期：2010-8-28；时间：下午上午11:13:57</li>
	 * </ul>
	 * <ul>
	 * <b>修订编号：</b>
	 * <li>修订日期：</li>
	 * <li>修订作者：</li>
	 * <li>修订原因：</li>
	 * <li>修订内容：</li>
	 * </ul>
	 * @param componentTypeEnum
	 */
	public void setComponentTypeEnum (ComponentTypeEnum componentTypeEnum )
	{
		this.set (LibConstants.COMPONENT_MODEL_TYPE.name().toLowerCase(),  componentTypeEnum) ;
	}

	
	protected void initAbstractDataModelType ( )
	{
		//this.setMetaModelTypeEnum ( MetaModelTypeEnum.ABSTRACT_LIBRA_DATA_MODEL ) ;
	}
	/**
	 * 当前GxtComponentMetaModel的父节点
	 
	 *  控件的模型结构设计（树形结构）
 * 包含结构：GxtComponentMetaModel(用于存储GxtComponentMetaModel间的树形关系) 与 HashMap（ComponentTypeEnum与其他）
	 * //private GxtComponentMetaModel parentComponentMetaModel;
	
	//private Component component;

	public GxtComponentMetaModel getParentComponentMetaModel() {
		return parentComponentMetaModel;
	}

	public void setParentComponentMetaModel(
			GxtComponentMetaModel parentComponentMetaModel) {
		this.parentComponentMetaModel = parentComponentMetaModel;
	}*/
}
